Unity 通过脚本控制Image组件
1.在Hierarchy面板上新建一个Canvas。 2.在Project面板上新建文件夹Resources,把你想要加载的图片放在这里面。 3.刚加载进来的图片是不能用的需要把图片改成sprite格式,图片必须是sprite格式在unity的Image里才可以使用。点击图片在Inspector面板的Texture Type里将属性改成Sprite(2D and UI)。 修改之后图片会变成这个样子。 第一种方法是定义变量通过变量把图片赋值给Image组件。 注意:脚本里使用Image需要引入命名空间 using UnityEngine.UI; 定义一个Sprite类型的变量(如果图片多的话可以定义成数组)。 我是把脚本挂在了Canvas上,如果是挂在了Image组件上可以不定义Image变量直接用transform.GetComponent().sprite = sprites[0]; 来动态加载图片。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ImageDemo : MonoBehaviour {
public Sprite[] sprites;
public Image image;
// Use this for initialization
void Start () {
//把图片赋值给Image组件
image.sprite = sprites[0];
}
}
在Canvas下创建一个Image组件。 然后把图片和image组件拖进脚本。 运行之后的结果。
第二种方法是在文件夹里找到图片然后赋值给Image组件。 在Assets下创建一个名为Resources的文件夹(注意名字不要错不然会找不到图片),然后把图片放在这个文件夹里,同样需要把图片改成sprite格式。 在这里我是动态创建的Image对象并没有在Unity 编译器里创建Image。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ImageDemo : MonoBehaviour {
void Start () {
//创建一个Image对象
GameObject newImage = new GameObject("Image");
//把newImage对象变成Canvas对象的子节点对象
newImage.transform.SetParent(GameObject.Find("Canvas").transform);
//添加Image组件
newImage.AddComponent();
//动态加载贴图赋值给Image
newImage.GetComponent().sprite = Resources.Load("2");
}
}
运行结果,由于没有设计格式位置什么的所以它在左下角。动态创建的所以右边Canvas下多了一个Image。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210423145659725.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ5OTAzODYy,size_16,color_FFFFFF,t_70)
也可以通过脚本去设置格式。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ImageDemo : MonoBehaviour {
void Start () {
//创建一个Image对象
GameObject newImage = new GameObject("Image");
//把newImage对象变成Canvas对象的子节点对象
newImage.transform.SetParent(GameObject.Find("Canvas").transform);
//添加Image组件
newImage.AddComponent();
//动态加载贴图赋值给Image
newImage.GetComponent().sprite = Resources.Load("2");
//将图片变成黑色而且改变透明度为50%
newImage.GetComponent().color = new Color(0, 0, 0, 0.5f);
//修改位置
newImage.GetComponent().anchoredPosition = new Vector2(0.0f, 100.0f);
//修改旋转
newImage.GetComponent().localRotation = Quaternion.Euler(new Vector3(0f, 180f, 0f));
//修改缩放
newImage.GetComponent().localScale = new Vector3(1.2f, 1.2f, 1.2f);
//修改大小
newImage.GetComponent().sizeDelta = new Vector2(200.0f, 200.0f);
}
}
设置格式后的结果。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210423145611332.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ5OTAzODYy,size_16,color_FFFFFF,t_70)
|